package controller

import (
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"go_spider_api/logic"
	"go_spider_api/models"
)

func StartXq(c *gin.Context) {
	// 校验参数，未传参数 则 默认重启所有小区爬虫
	spiderName := c.Query("spider_name")
	// 要启动的小区爬虫
	spiderList := make([]string, 0)

	xqspiderList := make([]string, len(models.XpSpiderList))
	// 注意这里为值复制
	copy(xqspiderList, models.XpSpiderList)

	if spiderName != "" {

		// 检查是否存在对应小区爬虫
		isExists := false

		for _, val := range xqspiderList {
			if val == spiderName {
				isExists = true
				break
			}
		}
		if !isExists {
			zap.L().Error("启动小区爬虫爬虫找不到！")
			c.JSON(200, gin.H{
				"code": 0,
				"msg": "----找不到对应爬虫----",
			})
			return
		}

		// 启动对应小区爬虫
		spiderList = []string{spiderName}


	} else {
		spiderList = xqspiderList
	}
	err := logic.StartXq(spiderList)
	if err != nil {
		zap.L().Error("启动小区爬虫失败", zap.Error(err))
		c.JSON(200, gin.H{
			"code": 0,
			"msg": "----启动小区爬虫失败----",
		})
		return
	}

	c.JSON(200, gin.H{
		"code": 200,
		"msg": "----成功启动对应小区爬虫服务----",
	})

}

func KillXq(c *gin.Context) {
	// 参数为空，默认杀死全部
	spiderName := c.Query("spider_name")
	if spiderName == "" {
		spiderList := make([]string, len(models.XpSpiderList))
		copy(spiderList, models.XpSpiderList)
		err := logic.KillEsfZf(spiderList)
		if err != nil {
			c.JSON(200, gin.H{
				"code": 0,
				"msg": "----爬虫服务KILL失败----",
			})
			return

		}

	}
	if spiderName != "" {

		err := logic.KillEsfZf([]string{spiderName})
		if err != nil {
			c.JSON(200, gin.H{
				"code": 0,
				"msg": "----爬虫服务KILL失败----",
			})
			return

		}

	}
	c.JSON(200, gin.H{
		"code": 200,
		"msg": "----成功杀死对应小区爬虫----",
	})

}
